package mysql.v1;

import java.sql.*;

/**JDBC可以完成CRUD操作【增加、修改、删除】
 *    使用JDBC规范  查询操作
 *    1.加载驱动：注册Mysql驱动
 *    2.准备SQL：连接成功Mysql服务器
 *    3.发送SQL：执行查询操作
 *    4.查询结果集：ResultSet 接口
 *    5.处理结果集：显示查询数据
 *    6.关闭资源
 *
 * */
public class MysqlJDBCV1 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.注册Mysql驱动--Java--Driver接口
        Class.forName("com.mysql.jdbc.Driver");
        //2.准备SQL，同时准备发送sql工具类--Java--DriverManager接口
        String username="root";
        String password="";
        String url="jdbc:mysql://127.0.0.1:3309/mi?characterEncoding=UTF-8";
        //DriverManager接口-->getConnection方法：传入三个参数
        //getConnection方法链接成功--返回对象Connection对象
        //顺利打印Connection对象：代表JDBC链接成功
        Connection con=DriverManager.getConnection(url,username,password);
        //打桩测试是否链接成功
        System.out.println("测试Java链接数据库对象："+con);

        //3.发送SQL：查询mi库--book表数据
        String sql="select * from book";
        //通过链接成功Connection对象.createStatement()
        //createStatement()链接数据库，返回Statement对象
        //Statement对象对应Java 链接数据库并且返回Statement对象，对象发送sql
        //statement对象：执行静态sql--具备CRUD功能：增删改查
        Statement st=con.createStatement();
        //4.executeUpdate() 增删改 操作 使用方法  返回int类型 (成功了几条sql)
        //  executeQuery()  查    操作 使用方法  返回ResultSet接口(查询结果集)
        ResultSet rs=st.executeQuery(sql);
        //ResultSet对象--Java--查询到的数据保存对象
        //5.处理结果集：显示book表中所有记录数【数据】
        System.out.println("-------------查询book表结果如下---------------");
        //显示数据--book表哪些字段，类型必须知道
        //取【显示】7个字段，类型 mysql--int[整型] varchar[字符串]
        //取【显示】7个字段，类型 java---int[整型] String[字符串]
        //ResultSet对象提供方法  next()   依次去除每个字段记录【数据】
        //前提：不知道多少字段：依次数据--for(知道多少字段) ×
        //                           do while ×
        //                           while √
        while(rs.next()){  //取出每个【7个】字段记录【数据】
            //语法：get+类型("字段名")  取字段名下类型
            int id=rs.getInt("id");
            //语法：get+类型("字段名")  取字段名下类型
            String author=rs.getString("author");
            //语法：get+类型("字段名")  取字段名下类型
            String name=rs.getString("name");
            int price=rs.getInt("price");
            String date=rs.getString("date");
            int number=rs.getInt("number");
            String discount=rs.getString("discount");
            //打桩：打印作者记录
            System.out.println("作者:"+author);
            System.out.println("书名："+name);
        }
    }
}
